package com.pussinboots.morning.sync.entity;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.Tolerate;

import java.time.LocalDateTime;
import java.io.Serializable;

/**
 * <p>
 * 商品表
 * </p>
 *
 * @author BaoZhou
 * @since 2019-09-09
 */
@Data
//支持链式风格
@Accessors(chain = true)
@Builder
@TableName("os_product")
public class Product extends Model<Product> {

    private static final long serialVersionUID = 1L;

    /**
     * 解决@Data与@Builder一起使用，实体类没有无参构造函数的坑
     * 此注解让lombok假装不知道有此方法，这样就不会与@Data产生冲突
     */
    @Tolerate
    public Product(){};

    /**
     * 商品ID
     */
    @TableId(value = "product_id", type = IdType.AUTO)
    private Long productId;

    /**
     * 商品编号
     */
    private String productNumber;

    /**
     * 标签ID
     */
    private Integer labelId;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 显示积分
     */
    private Integer showScore;

    /**
     * 线上价格
     */
    private BigDecimal onlineShowPrice;

    /**
     * 线下价格
     */
    private BigDecimal offlineShowPrice;

    /**
     * 国家统一零售价
     */
    private BigDecimal nationalPrice;

    /**
     * 商品简介
     */
    private String introduce;

    /**
     * 展示图片
     */
    private String picImg;

    /**
     * 是否置顶 1=置顶/0=默认
     */
    private Integer showInTop;

    /**
     * 是否导航栏 1=显示/0=隐藏
     */
    private Integer showInNav;

    /**
     * 是否热门 1=热门/0=默认
     */
    private Integer showInHot;

    /**
     * 是否上架：1=上架/0=下架
     */
    private Integer showInShelve;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 上架时间
     */
    private LocalDateTime shelveTime;

    /**
     * 上架人
     */
    private String shelveBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 搜索关键词
     */
    private String searchKey;

    /**
     * 页面标题
     */
    private String pageTitle;

    /**
     * 页面描述
     */
    private String pageDescription;

    /**
     * 页面关键词
     */
    private String pageKeyword;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 供应商编号
     */
    private String supplierNum;

    /**
     * 生产批号
     */
    private String batchNum;

    /**
     * 进货价
     */
    private BigDecimal purchasePrice;

    /**
     * 生产日期
     */
    private LocalDateTime productionTime;

    /**
     * 有效期
     */
    private String expirationDate;

    /**
     * 批准文号
     */
    private String approvalNum;

    /**
     * 规格
     */
    private String specification;

    /**
     * 是否拆零：0_否，1_是
     */
    private Integer pieces;

    /**
     * 中包装
     */
    private Integer mediumPackage;

    /**
     * 件装
     */
    private Integer piecePackage;

    /**
     * 剂型
     */
    private String dosage;

    /**
     * 用于记录创业者提交的商品状态，0:审核中，1:审核通过，-1:逻辑删除
     */
    private Integer status;

    /**
     * 申请人（创业者）ID
     */
    private Integer applyUserId;

    /**
     * 创业者成本价
     */
    private BigDecimal pioneerCostPrice;

    /**
     * 创业者类型：0_平台；1_个人；2_企业
     */
    private Integer pioneerType;

    /**
     * 是否允许批量调整价格 0/不允许，1/允许
     */
    private Boolean canPriceBatchEdit;

    /**
     * ERP主键
     */
    private String erpId;

    /**
     * 库存，此属性不是表字段，用于暂存数据
     */
    @TableField(exist = false)
    private Integer stock;

    @Override
    protected Serializable pkVal() {
        return this.erpId;
    }
}